Image and audio transform methods

ABSTRACT

Inverse discrete cosine transform (type-III DCT), used in video/image and audio coding, is implemented in the form of FFT to lower computational complexity.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority from provisional application No. 60/612,388, filed Sep. 23, 2004. The following coassigned patent applications disclose related subject matter: application Ser. No. 11/120,365, filed May 2, 2005, and Ser. No. 11/234,365.

BACKGROUND OF THE INVENTION

The present invention relates to digital signal processing, and more particularly to transform processing in audio/visual coding.

Processing of digital audio and video/image signals typically includes both transformation of the signals into frequency domains and reliance upon redundancies or psychoacoustic effects in order to reduce the number of bits used to encode the signals. Indeed, video coding standards such as MPEG-1, MPEG-2, MPEG-4, and H.263 use the hybrid video coding technique of block motion compensation plus transform coding. Block motion compensation is used to remove temporal redundancy between successive images (frames) by block predictions, whereas transform coding is used to remove spatial redundancy within each frame or within the prediction errors. FIGS. 2 a-2 b illustrate H.264/AVC video coding functions which include a deblocking filter within the motion compensation loop to limit artifacts created at block edges.

Thus a video frame can be encoded as its motion vectors plus corresponding prediction error blocks which are transformed, quantized, and entropy encoded. The transform of a block converts the pixel values of a block from the spatial domain into a frequency domain for quantization; this takes advantage of decorrelation and energy compaction of transforms such as the two-dimensional discrete cosine transform (DCT) or an integer transform approximating a DCT. For example, in MPEG and H.263, 8×8 blocks of DCT-coefficients are quantized, scanned into a one-dimensional sequence, and coded by using variable length coding (VLC). H.264 uses an integer approximation to a 4×4 DCT. Note that accurate nomenclature calls the DCT a type-II DCT, and the inverse DCT a type-III DCT.

Similarly, MPEG-1 audio coding standards such as Levels I, II, and III (MP3) apply an analysis filter bank to incoming digital audio samples to transform the signals into 32 frequency subbands and then within each of the subbands quantize the frequency-domain signal based upon psychoacoustic processing; see FIG. 2 c. FIG. 2 d shows the decoding including inverse quantization and a synthesis filter bank.

The MPEG-2 advanced audio coding (AAC) extends MP3 to larger sample windows and higher resolution in the frequency domain.

The MPEG-4 general audio coding (GA) standard enhances AAC with further capabilities such as spectral band replication (SBR) which extends low frequency bands to higher frequencies in a decoder and thereby reduces the number of bits required for encoding. FIGS. 3 a-3 b show functional blocks of an encoder and a decoder, respectively, which include PNS (perceptual noise substitution), TNS (temporal noise shaping), TwinVQ (transform-domain weighted interleaved vector quantization), M/S (conversion of spectra pairs from Mid/Side to Left/Right), and BSAC (bit sliced arithmetic coding).

The SBR block (FIG. 3 c) has its own filter banks for analysis filtering into 32 frequency bands and, after high frequency band generation, inverse filtering 64 frequency bands back to the time domain. Modified discrete cosine transform (MDCT) and inverse MDCT (IMDCT) are used for the analysis and synthesis filter banks for low-power SBR. U.S. Pat. No. 6,680,972 describes SBR.

Pan, A Tutorial on MPEG/Audio, 2 IEEE Multimedia 60 (1995) describes the MPEG/audio Layers I, II, and III coding. Konstantinides, Fast Subband Filtering in MPEG Audio Coding, 1 IEEE Signal Processing Letters 26 (1994) and Chan et al, Fast Implementation of MPEG Audio Coder Using Recursive Formula with Fast Discrete Cosine Transforms, 4 IEEE Transactions on Speech and Audio Processing 144 (1996) both disclose reduced computational complexity implementations of the filter banks in MPEG audio coding.

However, the computational complexity of the transforms used are a problem for low power devices.

SUMMARY OF THE INVENTION

The present invention provides transform digital signal processing, such as in audio/visual coding, using DFT and odd-DFT to yield type-III DCT.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a preferred embodiment flowchart.

FIGS. 2 a-2 d show video and audio coding.

FIGS. 3 a-3 d show AAC plus SBR coding.

FIGS. 4 a-4 b illustrate a processor and network communication.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

1. Overview

Preferred embodiment methods implement type-III discrete cosine transform (DCT) with a complex FFT of half the size; FIG. 1 is a flowchart. This has applications to video decoding (inverse DCT) and to modified discrete cosine transform (MDCT) filter bank of the type used in audio coding such as MP3, AAC, and AAC plus SBR.

Preferred embodiment systems (such as audio/video coders, cell phones and digital cameras with video clip and audio coding capabilities, et cetera) perform preferred embodiment methods with any of several types of hardware: digital signal processors (DSPs), general purpose programmable processors, application specific circuits, or systems on a chip (SoC) which may have multiple processors such as combinations of DSPs, RISC processors, plus various specialized programmable accelerators; see FIG. 4 a as a processor example. A stored program in an onboard or external (flash EEP) ROM or FRAM could implement the signal processing. Analog-to-digital converters and digital-to-analog converters can provide coupling to the real world, modulators and demodulators (plus antennas for air interfaces) can provide coupling for transmission waveforms, and packetizers can provide formats for transmission over networks such as the Internet; see FIG. 4 b.

2. Transform Preliminaries

Preliminarily, consider the relation of the discrete cosine transform (DCT) and the discrete Fourier transform (DFT); the DFT can be implemented very efficiently as the fast Fourier transform (FFT). In particular, for a block of N real-valued samples, x[n] for 0≦n≦N−1, define the (real-valued) type-II DCT X_(DCT,N)[k] with 0≦k≦N−1 of x[n] as: X _(DCT,N) [k]=c(k)Σ_(0≦n≦N−1) x[n] cos(πk(n+½/N) where c(k) is a normalization equal to 1 for all k except c(0)=1/√2 (this arises because the average of cos²( ) is ½). Note that the cosine argument with the +½ is the summation index for type-II DCT; for the inverse DCT (IDCT), which is a type-III DCT, the terms look the same but the summation is over the index without the +½.

Similarly, for a block of M samples x[m] for 0≦m≦M−1, define X_(M)[i] and X_(odd,M)[i] for 0≦i≦M−1, the M-point DFT and the M-point odd-DFT, respectively, of x[m] as:

$\begin{matrix} {{X_{M}\lbrack i\rbrack} = \;{\overset{\;}{\sum\limits_{0 \leq n \leq {M - 1}}^{\;}{x\lbrack n\rbrack}}\;{\mathbb{e}}^{{- {j2}}\;\pi\;{{ni}/M}}}} \\ {= {\sum\limits_{0 \leq n \leq {M - 1}}^{\;}{{x\lbrack n\rbrack}W_{M}^{ni}}}} \end{matrix}$ and

$\begin{matrix} {{X_{{odd},M}\lbrack i\rbrack} = \;{\sum\limits_{0 \leq m \leq {M - 1}}^{\;}{\left( {{x\lbrack m\rbrack}{\mathbb{e}}^{{- {j2}}\;\pi\;{m/2}M}} \right){\mathbb{e}}^{{- {j2}}\;\pi\; m\;{i/M}}}}} \\ {= {\sum\limits_{0 \leq m \leq {M - 1}}^{\;}{\left( {{x\lbrack m\rbrack}W_{M}^{m/2}} \right)W_{M}^{mi}}}} \end{matrix}$ where W_(M) is the usual abbreviation for the exponential e^(−j2π/M). Note that the M-point odd-DFT of x[m] looks like the odd frequency components of the 2M-point DFT of x[m] after x[m] has been extended to length 2M by padding with M 0s; this follows simply from W_(M) ^(n/2)=W_(2M) ^(n) and W_(M) ^(n)=W_(2M) ^(2n). More explicitly, let f[m]=x[m] for 0≦m≦M−1 and f[m]=0 for M≦m≦2M−1, and let F_(2M)[i] be the 2M-point DFT of f[m]; then X_(M)[i]=F_(2M)[2i] and X_(odd,M)[i]=F_(2M)[2i+1] for 0≦i≦M−1.

Also, for real-valued x[m] the M-point odd-DFT is symmetric about (M−1)/2 in that for 0≦i≦M−1: X _(odd,M) [i]=X _(odd,M)[M−1−i]* The complexity analysis below presumes the sample block sizes are powers of 2, so the DFTs can be computed by FFT methods such as split radix-2/4.

3. First Preferred Embodiment

First preferred embodiment methods calculate an M-point inverse DCT (IDCT, a type-III DCT) using an M/2-point complex DFT (which can be implemented as an FFT) by exploiting the symmetry features of the odd-DFT and the real DFT.

Start with the definition of the M-point IDCT for a block of M real-valued samples, x[n] for 0≦n≦M−1, and 0≦k≦M−1 the transform variable: X _(IDCT,M) [k]=Σ _(0≦n≦M−1) c[n]3 cos(πn(k+½)/M) Again, c(n) is a normalization equal to 1 for all n except c(0)=1/√2. Note that the sum is over the cosine argument without the +½ for the type-III DCT.

Next, express the cosine as the real part of an exponential

$\begin{matrix} {{\cos\left( {\pi\;{{n\left( {k + {1\text{/}2}} \right)}/M}} \right)} = {{Re}\left\{ {\mathbb{e}}^{{- {j2}}\;\pi\;{{n{({k + {1/2}})}}/2}\; M} \right\}}} \\ {= {{Re}\left\{ {W_{2\; M}^{n/2}W_{2\; M}^{nk}} \right\}}} \end{matrix}$ Thus using the fact that the c(n)x[n] are real-valued gives: X _(IDCT,M) [k]=Re{Y_(odd,2M) [k]} where Y_(odd,2M)[k] is the 2M-point odd-DFT transform of real-valued y[n] where y[n]=c(n)x[n] for 0≦n≦M−1 and y[n]=0 for M≦n≦2M−1:

$\begin{matrix} {{\left. {{Y_{{odd},{2M}}\lbrack i\rbrack} = \;{\overset{\;}{\sum\limits_{0 \leq n \leq {{2M} - 1}}^{\;}\left( {y\lbrack n\rbrack} \right.}W_{2M}^{n/2}}}\; \right)W_{2M}^{in}}\;} \\ {= {\sum\limits_{0 \leq n \leq {M - 1}}^{\;}{\left( {{c(n)}{x\lbrack n\rbrack}W_{2M}^{n/2}} \right)W_{2M}^{in}}}} \end{matrix}$ Now, the symmetry of the 2M-point odd-DFT for real-valued samples applies because y[n] is real-valued, and so for 0≦i≦2M−1: Y _(odd,2M) [i]=Y _(odd,2M)[2M−1−i]*. Thus, instead of calculating the transform Y_(odd,2M)[k] for 0≦k≦M−1 and taking the real part ot get X_(IDCT,M)[k], the preferred embodiment methods calculate the transform only for even coefficients (Y_(odd,2M)[2k] for 0≦k≦M−1) and use the symmetry property to get the odd coefficients: Y_(odd,2M)[2k+1]=Y_(odd,2M)[2M−2−2k]*. This allows the use of a simple calculation of the even coefficients in terms an M-point complex DFT (implemented as an FFT) to provide the transform.

In particular, use the fact that y[n]=0 for M≦n≦2M−1 and W_(2M) ^(2k)=W_(M) ^(k) to have:

$\begin{matrix} {{Y_{{odd},{2\; M}}\left\lbrack {2k} \right\rbrack} = {\sum\limits_{0 \leq n \leq {{2M} - 1}}^{\;}{\left( {{y\lbrack n\rbrack}W_{2\; M}^{n/2}} \right)W_{2\; M}^{2\;{kn}}}}} \\ {= {\sum\limits_{0 \leq n \leq {M - 1}}^{\;}{\left( {{y\lbrack n\rbrack}W_{2\; M}^{n/2}} \right)W_{M}^{kn}}}} \\ {= {\sum\limits_{0 \leq n \leq {M - 1}}^{\;}{{z\lbrack n\rbrack}W_{M}^{kn}}}} \\ {= {Z_{M}\lbrack k\rbrack}} \end{matrix}$ where z[n] is the complex-valued sequence for 0≦n≦M−1 defined as:

$\begin{matrix} {{z\lbrack n\rbrack} = {{y\lbrack n\rbrack}W_{2\; M}^{n/2}}} \\ {= {{c(n)}{x\lbrack n\rbrack}W_{2\; M}^{n/2}}} \\ {= {{{c(n)}{x\lbrack n\rbrack}{\cos\left( {\pi\; n\text{/}2M} \right)}} + {j\;{c(n)}{x\lbrack n\rbrack}{\sin\left( {\pi\; n\text{/}2\; M} \right)}}}} \\ {= {{z_{R}\lbrack n\rbrack} + {j\;{z_{I}\lbrack n\rbrack}}}} \end{matrix}$ where z_(R)[n] and z_(I)[n] are the real and imaginary parts of z[n]. Hence, for 0≦2k≦M−1

$\begin{matrix} {{X_{{IDCT},M}\left\lbrack {2\; k} \right\rbrack} = {{Re}\left\{ {Y_{{odd},{2\; M}}\left\lbrack {2\; k} \right\rbrack} \right\}}} \\ {= {{Re}\left\{ {Z_{M}\lbrack k\rbrack} \right\}}} \end{matrix}$ And using the odd-DFT symmetry

$\begin{matrix} {{X_{{IDCT},M}\left\lbrack {{2\; k} + 1} \right\rbrack} = {{Re}\left\{ {Y_{{odd},{2\; M}}\left\lbrack {{2\; k} + 1} \right\rbrack} \right\}}} \\ {= {{Re}\left\{ {Y_{{odd},{2\; M}}\left\lbrack {{2\; M} - 2 - {2k}} \right\rbrack}^{*} \right\}}} \\ {= {{Re}\left\{ {Y_{{odd},{2\; M}}\left\lbrack {{2M} - 2 - {2\; k}} \right\rbrack} \right\}}} \\ {= {{Re}\left\{ {Z_{M}\left\lbrack {M - 1 - \; k} \right\rbrack} \right\}}} \end{matrix}$ However, the DFT of z[n] is a DFT of a complex sequence, so consider real and imaginary parts to simplify. Now generally, if f[m] is real-valued with the M-point DFT F_(M)[k], then the even part of f[m] transforms to Re{F_(M)[k]} and the odd part of f[m] transforms to jIm{F_(M)[k]}. Therefore, consider the even part of z_(R)[n] and the odd part of z_(I)[n] (both of which are real-valued) with the definitions: u[n]=even{z _(R) [n]} v[n]=odd{z _(I) [n]} That is, u[n]=(z_(R)[n]+z_(R)[M−n])/2 for 1≦n≦M−1 together with u[0]=z_(R)[0], and v[n]=(z_(I)[n]−z_(I)[M−n])/2 for 1≦n≦M−1 together with v[0]=0. Let the M-point DFTs of u[n] and v[n] be denoted U_(M)[k] and V_(M)[k], respectively. Thus U_(M)[k] is real-valued and V_(M)[k] is imaginary-valued, and we have:

$\begin{matrix} {{X_{{IDCT},M}\left\lbrack {2\; k} \right\rbrack} = {{Re}\left\{ {Z_{M}\lbrack k\rbrack} \right\}}} \\ {= {{U_{M}\lbrack k\rbrack} - {j\;{V_{M}\lbrack k\rbrack}}}} \end{matrix}$

Indeed, z[n]=z_(R)[n]+j z_(I)[n]=even{z_(R)[n]}+odd {z_(R)[n]}+j even{z_(I)[n]}+j odd {z_(I)[n]} and the terms even{z_(R)[n]}+j odd {z_(I)[n]} give the real-part of Z_(M)[k] and the terms odd{z_(R)[n]}+j even{z_(R)[n]} give the imaginary part of Z_(M)[k].

Define the real-valued sequence g[n] for 0≦n≦M−1: g[n]=u[n]+v[n] so u[n] is the even part of g[n] and v[n] is the odd part of g[n]. Hence, with G_(M)[k] the M-point DFT of real-valued g[n]: U_(M)[k]=Re{G_(M)[k]} and V_(M)[k]=j Im{G_(M)[k]}. Therefore: X _(IDCT,M)[2k]=Re{G _(M) [k]}−Im{G _(M) [k]} Of course, the M-point DFT of real-valued g[n] can be recast as an M/2-point DFT of a complex-valued sequence and implemented as an FFT.

Lastly, the odd components of the type-III DCT are:

$\begin{matrix} {{X_{{IDCT},M}\left\lbrack {{2\; k} + 1} \right\rbrack} = {{Re}\left\{ {Z_{M}\left\lbrack {M - 1 - k} \right\rbrack} \right\}}} \\ {= {{U_{M}\left\lbrack {M - 1 - k} \right\rbrack} - {{jV}_{M}\left\lbrack {M - 1 - k} \right\rbrack}}} \\ {= {{{Re}\left\{ {G_{M}\left\lbrack {M - 1 - k} \right\rbrack} \right\}} - {{Im}\left\{ {G_{M}\left\lbrack {M - 1 - k} \right\rbrack} \right\}}}} \end{matrix}$ Thus the overall preferred embodiment method includes the following steps:

-   -   a) compute real-valued z_(R)[n] from input real-valued x[n] for         0≦n≦M−1 by z_(R)[n]=c(n)x[n]cos(πn/2M) where c(n)=1 for all n         except c(0)=1/√2.     -   b) compute real-valued z_(I)[n] from the same input x[n] for         0≦n≦M−1 by z_(I)[n]=x[n] sin(πn/2M); note that z_(I)[0]=0         because sin(0)=0.     -   c) compute u[n] from z_(R)[n] for 0≦n≦M−1 by         u[n]=(z_(R)[n]+z_(R)[M−n])/2 for 1≦n≦M−1 together with         u[0]=Z_(R)[0].     -   d) compute v[n] from z_(I)[n] for 0≦n≦M−1 by         v[n]=(z_(I)[n]−z_(I)[M−n])/2 for 1≦n≦M−1 together with v[0]=0.     -   e) compute (real-valued) g[n] for 0≦n≦M−1 by g[n]=u[n]+v[n].     -   f) compute G_(M)[k] as the M-point DFT of real g[n]; this can be         implemented as an M/2-point complex DFT.     -   g) compute X_(IDCT,M)[2k]=Re{G_(M)[k]}−Im{G_(M)[k]} for         0≦k≦M/2−1.     -   h) compute X_(IDCT,M)[2k+1]=Re{G_(M)[M−1−k]}−Im{G_(M)[M−1−k]}         for 0≦k≦M/2−1.

4. Complexity Analysis

The first preferred embodiment method requires 2M multiplications and M additions to calculate z[n], M additions to calculate u[n] and v[n], M additions to calculate g[m], a real M-point FFT to find G_(M)[k], and M additions to calculate X_(IDCT,M)[2k] from the real and imaginary parts of G_(M)[k]. Therefore the overall complexity is M/2 (log₂M+1) multiplications and 3M/2 (log₂M+1) additions.

5. Preferred Embodiment Applications

The preferred embodiment methods of type-III DCT computation can be applied to video/image and audio coding. In particular, for AAC Plus encoding with low-power SBR, the SBR filter bank is used to split the time domain signal from the core AAC decoder into 32 subband signals. The outputs from the filter bank, i.e., the subband samples, are real-valued and critically sampled. The flowchart of the filter bank operation is given in FIG. 3 d. The filtering involves the following steps, where an array x consisting of 320 time domain input samples is assumed. A higher index into the array corresponds to older samples.

-   -   a) Shift the samples in the array x by 32 positions; the oldest         32 samples are discarded and 32 new samples are stored in         positions 0 to 31.     -   b) Multiply the samples of array x by every other coefficient of         window c to give array z (320 samples). The 640 c coefficients         can be found in Table 4.A.87 of the MPEG4 GA standard; c roughly         has a sinx/x form with a main lobe 211 samples wide centered at         sample 320 plus small side lobes but with everything multiplied         by a sign change at every 128 samples.     -   c) Sum (stack) the samples according to         u[n]=z[n]+z[64+n]+z[128+n]+z[192+n]+z[256+n] to create the         64-element array u.     -   d) Calculate new 32 subband samples by the 32×64 matrix         operation M,u, where the matrix elements are M_(r)(k,n)=2         cos[π(k+½)(2n−96)/64] for the index ranges 0≦k≦32 and 0≦n≦64.         Every loop in the flowchart produces 32 subband samples, each         representing the output from one filter bank subband.

Now the 32×64 MDCT operation of step (d) can be converted into a 32×32 type-III DCT by reworking the array u (reindexing and restacking). In particular, cos[π(k+½)(2n−96)/64] is symmetric about n=48; thus define y[m]=u[48+m]+u[48−m] (using trigonometric periodicity for index values out of range). This allows use with the preferred embodiment method for 32-point type-III DCT computation in terms of a 32-point FFT.

6. Modifications

The preferred embodiments can be modified in various ways while retaining the feature of implementing a type-III DCT with an FFT.

For example, in generating the even and odd parts (steps (c) and (d) of the preferred embodiment), we may only compute it for 1<n≦M/2−1, and exploit the symmetry to generate the second half. 

1. A method of audio analysis filter bank operation of a digital signal processor, comprising the steps of: (a) receiving in the digital signal processor a block of N audio samples where N is a positive integer; (b) including said block in an array of prior samples; (c) windowing said array of samples; (d) symmetric summing said array to form an N-vector S_(n) for n=0, 1, . . . , N−1; (e) effecting a matrix multiplication and outputting V_(i), wherein V_(i)=Σ_(0≦n≦N−1) M_(i,n)S_(n), for i=0, 1, . . . , N−1, where the matrix elements are M_(i,n)=COS[πn(2i+1)/N]; and wherein said matrix multiplication of step (e) includes: (i) computing z_(R)[n] for 0≦n≦N−1 by: z_(R)[n]=c(n) S_(n) cos[πn/2N] where c(n)=I for all n except c(0)=1/√2; (ii) computing z₁[n] for 0≦n≦N−1 by: z₁[n]=S_(n)sin[πn/2N]; (iii) computing u[n] for 0≦n≦N−1 by: u[n]=(z_(R)[n]+z_(R)[N−n]/2 for 1≦n≦N−1 together with u[0]=z_(R)[0]; (iv) computing v[n] for 0≦n≦N−1 by v[n]=(z₁[n]−z₁[M−n])/2 for 1≦n≦N−1 together with v[0]=0; (v) computing g[n] for 0≦n≦N−1 by g[n]=u[n]+v[n]; (vi) computing G[k] as the N-point DFT of g[n]; (vii) computing V_(2k)=Re{G[k]}−Im{G[k]} for 0≦k≦N/2−1; and (viii) computing V_(2k+1)=Re{G[N−1−k]}−Im{G[N−1−k]} for 0≦k≦N/2−1.
 2. The method of claim 1, wherein: (a) N=32.
 3. An audio spectral band reflection analysis filter bank operation, comprising: (a) a memory for audio samples; (b) array circuitry coupled to said memory, for receiving a block of N audio samples and to window plus sum an array symmetrically including said N audio samples plus audio samples stored in said memory to generate a length-N vector with components S₀, S₁, . . . , S_(N−1); and (c) transform circuitry coupled to said array circuitry and said memory for effecting a matrix multiplication and outputting V_(i), wherein V_(i)=Σ_(0≦n≦N)M_(i,n)S_(n), for i=0, 1 . . . . N−1, wherein the matrix elements are M_(i,n)=cos[πn(2i+1)/N]. (d) wherein said transform circuitry includes sub-circuitry effecting said matrix multiplication by: (i) computing by: Z_(R)[n] for for 0≦n≦N−1 by: z_(R)[n]=c(n) S_(n) cos[πn/2N] where c(n)=I for all n except c(0)=1/√2; (ii) computing z₁[n] for 0≦n≦N−1 by: z₁[n]=S_(n) sin[πn/2N]; (iii) computing u[n] for for 0≦n≦N−1 by u[n]=z_(R)[n]+z_(R)[N−n]/2 for 1≦n≦N−1 together with u[0]=z_(R)[0]; (iv) computing v[n] for 0≦n≦N−1 by v[n]=z₁[n] −z₁[M−n])/2 for 1≦n≦N−1 together with v[0] =0; (v) computing g[n] for 0≦n≦N−1 by g[n]=u[n]+v[n]; (vi) computing G[k] as the N-point DFT of g[n]; (vii) computing V_(2k)=Re{G[k]}−Im{G[k]} for 0≦k≦N/2−1; and (viii) computing V_(2k+1)=Re{G[N−1−k]}−Im{G[N−1−k]} for 0≦k≦N/2−1.
 4. The filter bank of claim 3, wherein: (a) said transform circuitry and said output circuitry are implemented as a program on a programmable processor.
 5. The filter bank of claim 3, wherein: (a) N=32.
 6. A method of image data inverse DCT operation operation of a digital signal processor, comprising the steps of: (a) receiving in the digital signal processor a block of N² image transform data S_(n,m) where n, m=0, 1, 2 . . . . . N−1 where N is a positive integer; (b) effecting a matrix multiplication and outputting V_(i,m), wherein V_(i,m)′=Σ_(0≦n≦N−1) M_(i,n)S_(n,m), for i=0, 1, . . . , N−1, wherein the matrix elements are M_(i,n)=cos[πn(2i+1)/N]; and (c) effecting a matrix multiplication of said V_(i,m) with respect to the m index; (d) wherein said matrix multiplication of step (b) includes: (i) computing z_(R)[n,m] for 0≦n≦N−1 by: z_(R)[n,m]=c(n) S_(n,m) cos[πn/2N] where c(n)=I for all n except c(0)=1/√2; (ii) computing z₁[n,m] for 0≦n≦N−1 by: z₁[n,m]=S_(n,m) sin[πn/2N]; (iii) computing u[n,m] for 0≦n≦N−1 by: u[n,m]=(Z_(R)[n,m]+Z_(R)[N−n,m]/2 for 1≦n≦N−1 together with u[0,m]=Z_(R)[0,m]; (iv) computing v[n,m] for 0≦n≦N−1 by v[n,m]=(z₁[n,m]−z₁[M−n,m])/2 for 1≦n≦N−1 together with v[0,m]=0; (v) computing g[n] for 0≦n≦N−1 by g[n]=u[n]+v[n]; (vi) computing G[k,m] as the N-point DFT of g[n,m]; (vii) computing V_(2k,m)=Re{G[k,m]}−Im{G[k,m]} for 0≦k≦N/2−1; and (viii) computing V_(2k+,m1)=Re{G[N−1−k,m]}−Im{G[N−1−1k,m]} for 0≦k≦N/2−1.
 7. The method of claim 6, wherein: (a) N=8. 